Patching and upgrading software components in a production environment are often disruptive because they require the deployed application be shutdown and restarted after patching or upgrading is performed. Partial patching or upgrading a complex software package while it is running is even harder. The challenge is in maintaining business-as-usual status while patching or upgrading is taking place. Ideally, customers should be able to receive the expected functions from the software while live patching/upgrading is being performed.
In high performance execution environments related to interpreted programming languages, such as Java™ and Net, there is usually a dynamic optimizing compiler (also referred to as dynamic code generator) responsible for generating more efficient versions of the program code running inside the execution environment. These compiled versions of the program code generally run faster and are used in place of the interpreted versions as appropriate. However. when problems arise such as when there are failed compilations, or when a newer dynamic compiler with new functionality is available, the dynamic compiler is subject to being replaced. which is a challenging task to perform while the program is being executed, without shutting down any running applications, because the dynamic compiler is simultaneously interacting with other components of the execution environment. In a production environment where business disruptions are highly undesirable, real time patching or hot-swapping of the dynamic compiler is of higher importance.